package com.dyz.leetcode._01_array;

import java.util.Arrays;

public class _135_candy {
    public int candy(int[] ratings) {
        //我们可以将「相邻的孩子中，评分高的孩子必须获得更多的糖果」这句话拆分为两个规则，分别处理。
        //左规则：当 muns[i - 1] < nums[i]时，i 号学生的糖果数量将比 i - 1号孩子的糖果数量多。
        //右规则：当 nums[i] > nums[i + 1]时，i 号学生的糖果数量将比 i + 1号孩子的糖果数量多.
        int n = ratings.length;
        int[] letf2right = new int[n];
        Arrays.fill(letf2right, 1);
        int[] right2left = new int[n];
        Arrays.fill(right2left, 1);

        //比左边的大
        for(int i=0; i<n; i++){
            if(i!=0 && ratings[i]>ratings[i-1]){
                letf2right[i] = letf2right[i-1]+1;
            }else{
                letf2right[i]=1;
            }
        }
        //比右边的大
        for(int i=n-1; i>=0; i--){
            if(i!=n-1 && ratings[i]>ratings[i+1]){
                right2left[i] = right2left[i+1]+1;
            }else{
                right2left[i]=1;
            }
        }

        //遍历求和
        int sum = 0;
        for(int i=0; i<n; i++){
            sum+=Math.max(letf2right[i], right2left[i]);
        }
        return sum;
    }
}
